package com.example.statemachine.machine.base;

/**
 * @author jianwei.wang
 * @version v1.0
 * @date 2019/5/9 13:43
 * 状态机接口
 **/
public interface FsmMachine {

    /**
     *初始化状态机
     *
     * @author jianwei.wang
     * @date 2019/5/9 13:48
     **/
    void initMachine();

    /**
     *根据状态获取状态体
     *
     * @param status:
     * @author jianwei.wang
     * @date 2019/5/9 13:49
     * @return com.example.statemachine.machine.base.FsmState
     **/
    FsmState getState(int status);

    /**
     *执行状态扭转
     *
     * @param event:
     * @param status:
     * @author jianwei.wang
     * @date 2019/5/9 13:49
     * @return com.example.statemachine.machine.base.FsmResBody
     **/
    FsmResBody execute(int event,int status);

}
